package algo3c3g3.controller;

import java.io.*;
import algo3c3g3.view.*;

/**
 * Establece los metodos necesarios para controlar un juego.
 */
public interface Controller
{
    /**
     * Registra una vista a este controlador.
     * Solo puede haber una vista registrada a la vez.
     */
    void registerView(View view);
    
    /**
     * Guarda en un arhicvo XML el nivel registrado en este controlador.
     * @param file Achivo XML
     */
    void saveLevel(File file);
    
    /**
     * Inicia un juego nuevo.
     */
    void startGame();
    
    /**
     * Detiene el bucle de juego.
     */
    void stopGame();
    
    /**
     * Pausa el juego.
     */
    void setPause(boolean value);
    
    boolean isPaused();
    
    /**
     * Devuelve una referencia al controlador de acciones.
     */
    ActionController getActionController();
}
